package com.partsoft.dits.utils;

import java.util.Arrays;
import java.util.List;

/**
 * JSON工具类
 * 
 * @author neeker
 */
public abstract class JsonUtils {

	/**
	 * 进行JSON格式转码
	 * @param sourceText 原始文本
	 * @return
	 */
	public static String escapeJSON(String sourceText) {
		if (sourceText.indexOf("'") != -1) {
			// 将单引号转义一下，因为JSON串中的字符串类型可以单引号引起来的
			sourceText = sourceText.replaceAll("'", "\\\'");
		}
		if (sourceText.indexOf("\"") != -1) {
			// 将双引号转义一下，因为JSON串中的字符串类型可以单引号引起来的
			sourceText = sourceText.replaceAll("\"", "\\\\\"");
		}

		if (sourceText.indexOf("\r\n") != -1) {
			// 将回车换行转换一下，因为JSON串中字符串不能出现显式的回车换行
			sourceText = sourceText.replaceAll("\r\n", "\\\\u000d\\\\u000a");
		}
		if (sourceText.indexOf("\r") != -1) {
			// 将回车转换一下，因为JSON串中字符串不能出现显式的回车换行
			sourceText = sourceText.replaceAll("\r", "\\\\u000a");
		}
		if (sourceText.indexOf("\n") != -1) {
			// 将换行转换一下，因为JSON串中字符串不能出现显式的换行
			sourceText = sourceText.replaceAll("\n", "\\\\u000a");
		}
		return sourceText;
	}

	/**
	 * 把传入的列表转成JSON格式的字符串列表
	 * @param strArrays 字符串列表
	 * @return JSON文本
	 */
	public static String toJSONArray(List<String> strArrays) {
			StringBuffer sbf = new StringBuffer();
			sbf.append("[");
			boolean appended = false;
			for (String strItem : strArrays) {
				if (appended) sbf.append(",");
				appended = true;
				sbf.append("\"").append(strItem).append("\"");
			}
			sbf.append("]");
			return sbf.toString();
	}
	
	/**
	 * 把传入的列表转成JSON格式的字符串列表
	 * @param strArrays 字符串列表
	 * @return JSON文本
	 */
	public static String toJSONArray(String[] strArrays) {
		return toJSONArray(Arrays.asList(strArrays));
	}

}
